import request from '@/utils/request'
import type { 
  User,
  CreateUser,
  UpdateUser,
  ResetPassword,
  UserQuery,
  UserList
} from '@/types/api/system/user'
import type { API } from '@/types/api/response'

/**
 * 获取用户列表
 * @param params 查询参数
 */
export const getUserList = (params: UserQuery) => {
  return request.get<API.Response<UserList>>('/api/system/user/list', { params })
}

/**
 * 获取用户详情
 * @param id 用户ID
 */
export const getUserDetail = (id: string) => {
  return request.get<API.Response<User>>(`/api/system/user/${id}`)
}

/**
 * 创建用户
 * @param data 用户信息
 */
export const createUser = (data: CreateUser) => {
  return request.post<API.Response<User>>('/api/system/user', data)
}

/**
 * 更新用户
 * @param id 用户ID
 * @param data 用户信息
 */
export const updateUser = (id: string, data: UpdateUser) => {
  return request.put<API.Response<User>>(`/api/system/user/${id}`, data)
}

/**
 * 删除用户
 * @param ids 用户ID数组
 */
export const deleteUser = (ids: string[]) => {
  return request.delete<API.Response<null>>('/api/system/user', { data: { ids } })
}

/**
 * 重置密码
 * @param id 用户ID
 * @param data 新密码
 */
export const resetUserPassword = (id: string, data: ResetPassword) => {
  return request.put<API.Response<null>>(`/api/system/user/${id}/password`, data)
}

/**
 * 修改用户状态
 * @param id 用户ID
 * @param status 状态(0:禁用 1:启用)
 */
export const changeUserStatus = (id: string, status: 0 | 1) => {
  return request.put<API.Response<null>>(`/api/system/user/${id}/status`, { status })
}

/**
 * 分配角色
 * @param userId 用户ID
 * @param roleIds 角色ID数组
 */
export const assignRoles = (id: string, roleIds: string[]) => {
  return request.put<API.Response<null>>(`/api/system/user/${id}/roles`, { roleIds })
} 